package cn.jiedh.app.meiweidk.Utils.tool;

import android.text.TextUtils;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @name： 孙科技
 * @phone： 13308334117
 * @createTime： 2017/3/1
 * @modifyTime： 2017/3/1
 * @explain：
 */
public class TimeUtils {


    /**
     * 输入时间戳返回时间 1443571710-->2015-9-30 0:0:0  10位
     *
     * @param time
     * @return
     */
    public static String InputTimetampAll(String time) {
        if (TextUtils.isEmpty(time) || "null".equals(time)) {
            return "";
        }
        if (time.length() > 9) {
            time = time.substring(0, 10);
        }
        SimpleDateFormat sdr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        int i = Integer.parseInt(time);
        String times = sdr.format(new Date(i * 1000L));
        return times;
    }

    public static String InputTimetamp(String time) {
        if (TextUtils.isEmpty(time) || "null".equals(time)) {
            return "";
        }
        if (time.length() > 9) {
            time = time.substring(0, 10);
        }
        SimpleDateFormat sdr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        int i = Integer.parseInt(time);
        String times = sdr.format(new Date(i * 1000L));
        return times;
    }

    private static String[] str = new String[]{"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss"};
    /**
     * 毫秒数转String
     */
    public static String FORMATE_DATE_STR = "yyyy-MM-dd HH:mm:ss";
    public static String FORMATE_DATE_STR1 = "yyyy-MM-dd HH:mm:ss";
    public static String MillisToStr(Long timeMillis) {
        if (timeMillis == null) {
            return "";
        }
        Date date = new Timestamp(timeMillis);
        SimpleDateFormat sf = new SimpleDateFormat(FORMATE_DATE_STR);
        return sf.format(date);
    }
    public static String MillisToStr1(Long timeMillis) {
        if (timeMillis == null) {
            return "";
        }
        Date date = new Timestamp(timeMillis);
        SimpleDateFormat sf = new SimpleDateFormat(FORMATE_DATE_STR1);
        return sf.format(date);
    }

    public static String FORMATE_DATE_DAY_STR = "yyyy-MM-dd";

    public static String MillisToDayStr(Long timeMillis) {
        if (timeMillis == null) {
            return "";
        }
        Date date = new Timestamp(timeMillis);
        SimpleDateFormat sf = new SimpleDateFormat(FORMATE_DATE_DAY_STR);
        return sf.format(date);
    }

    public static String MillisToStr(Long timeMillis, int type) {
        if (timeMillis == null) {
            return "";
        }
        Date date = new Timestamp(timeMillis);
        SimpleDateFormat sf = new SimpleDateFormat(str[type]);
        return sf.format(date);
    }

    /**
     * String 转毫秒数
     *
     * @param timeStr
     * @return
     */
    public static Long StrToMillis(String timeStr) {
        if ("未填写".equals(timeStr)) {
            return System.currentTimeMillis();
        }
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(FORMATE_DATE_STR);//24小时制
        Long millis = null;
        try {
            millis = simpleDateFormat.parse(timeStr).getTime();
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return millis;
    }

    /**
     * 计算时间差
     *
     * @param starTime 开始时间
     * @param endTime  结束时间
     * @param type     类型 0：天  1：小时   2：分钟   3：秒
     * @return 返回时间差
     */

    /**
     * 计算剩余日期
     *
     * @param endTime 传入的时间
     * @param type    类型 0：相差多少天  1：相差多少小时  2：相差多少分钟  3：相差多少秒
     * @return 相差的时间
     */
    public static int calculationRemainTime(long endTime, int type) {

        Date now = new Date(System.currentTimeMillis());// 获取当前时间
        long l = now.getTime() - endTime;
        long day = l / (24 * 60 * 60 * 1000);
        long hour = (l / (60 * 60 * 1000) - day * 24);
        long min = ((l / (60 * 1000)) - day * 24 * 60 - hour * 60);
        long s = (l / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
        L.i("时间差", "剩余" + day + "天" + hour + "小时" + min + "分" + s + "秒");
        switch (type) {
            case 0:
                return (int) day;
            case 1:
                return (int) hour;
            case 2:
                return (int) min;
            case 3:
                return (int) s;
            default:
                break;
        }
        return 0;
    }


    /**
     * 计算剩余日期
     *
     * @param endTime 传入的时间
     * @param type    类型 0：相差多少天  1：相差多少小时  2：相差多少分钟  3：相差多少秒
     * @return 相差的时间
     */
    public static String gettime(String strtime) {
        long endTime = StrToMillis(strtime);
        Date now = new Date(System.currentTimeMillis());// 获取当前时间
        long l = now.getTime() - endTime;
        long day = l / (24 * 60 * 60 * 1000);
        long hour = (l / (60 * 60 * 1000) - day * 24);
        long min = ((l / (60 * 1000)) - day * 24 * 60 - hour * 60);
        long s = (l / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
        L.i("时间差", "剩余" + day + "天" + hour + "小时" + min + "分" + s + "秒");
        if (day<=0){
            return (int) hour+"小时前";
        }
        if (day>0){
            return MillisToStr1(endTime);
        }
        return "";
    }
}
